import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
// 1,多次点击同一个路由，报错
// 2，清除掉token 之后，点击页面其他路由，报错 从某个路由跳转到另外一个路由/ ，禁止重定向的错误
const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(location) {
  // 当前路由获取的是第一次跳转内容，不存在重定向概念，不包括 redirect（主动重定向）
    return originalPush.call(this, location).catch(err => err) 
}
// this.$router.push({})
const routes = [
  {
    path: '/',
    name: '首页',
    component: ()=> import(/* webpackChunkName: "about" */ '../views/home/index.vue'),
    meta: {
      isLogin: true,
      icon: 'el-icon-s-home'
    }
  },
  {
    path: '/userList/index',
    name: '人员管理',
    component: ()=> import(/* webpackChunkName: "about" */ '../views/basicData/userList/index.vue'),
    meta: {
      isLogin: true,
      icon: 'el-icon-s-custom'
    }
  },
  
  {
    path: '/project',
    name: '项目管理',
    component: ()=> import(/* webpackChunkName: "about" */ '../views/basicData/project/index.vue'),
    meta: {
      isLogin: true,
      icon: 'el-icon-s-custom'
    }
  },
  {
    path: '/work',
    name: '工种管理',
    component: ()=> import(/* webpackChunkName: "about" */ '../views/basicData/work/index.vue'),
    meta: {
      isLogin: true,
      icon: 'el-icon-s-custom'
    }
  },
  {
    path: '/company',
    name: '公司管理',
    component: ()=> import(/* webpackChunkName: "about" */ '../views/basicData/company/index.vue'),
    meta: {
      isLogin: true,
      icon: 'el-icon-s-custom'
    }
  },
  {
    path: '/login',
    name: 'login',
    component: ()=> import(/* webpackChunkName: "about" */ '../views/login/index.vue'),
    meta: {
      isLogin: false
    }
  }
]

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})

// 全局路由守卫
router.beforeEach((to,from,next)=> {
  // 如果是登陆状态，禁止回跳到登陆页面
  // 如果不是登陆状态，那么就必须跳到登陆页面
  let userInfo = localStorage.getItem("userInfo");
  let token = userInfo?JSON.parse(userInfo).token: ''
  if(userInfo && token) {
    if(to.path == '/login') {
      next(false)
    }else {
      // next(true)/
      next() 
    }
  }else {
    console.log(85)
    // 因为next当中加入 path 跳转参数的时候，会再次进入beforeEach当中进行判断，如果没有token 那个还会进入
    // 当前这个else里边，那么就会继续循环当前的next跳转，所以加了一个判断，进行to.path等于login的时候
    // 进行下一步操作，跳转到登陆页面
    // Maximum call stack size exceeded 内存溢出/ 次数过多，容易导致页面崩溃
    if(to.path == '/login') {
      console.log(to.path,91)
      next()
    }else {
      next({
        path: '/login'
      })
    }
    // next('/login')
  }
})









export default router
